﻿// Created by amoylel on 12/18/2018.
// Copyright (c) 2018 amoylel All rights reserved.

#ifndef AMO_FUNCTIONAL_65EEED5B_1B3C_4B1F_9CF9_A2EB1C6A4A93_HPP__
#define AMO_FUNCTIONAL_65EEED5B_1B3C_4B1F_9CF9_A2EB1C6A4A93_HPP__



#include <functional>


namespace amo {
    using std::function;
    using std::bind;
    using std::ref;
    using std::hash;
    namespace placeholders {
        /// \todo this feels hacky, is there a better way?
        using std::placeholders::_1;
        using std::placeholders::_2;
        using std::placeholders::_3;
    }
    //namespace placeholders = boost::placeholders;
    // See above definition for more details on what this is and why it exists
#define _AMO_REF(x) std::ref(x)
    
    template <typename T>
    void clear_function(T & x) {
        x.clear();
    }
    
    
}

#endif // AMO_FUNCTIONAL_65EEED5B_1B3C_4B1F_9CF9_A2EB1C6A4A93_HPP__
